package com.shujia.scala

object Demo14Fun1 {
  def main(args: Array[String]): Unit = {

    /**
      * 面向对象编程， 将一个对象传来传去，
      * 1、以对象作为参数
      * 2、以对象作为返回值
      * 需要明确对象的类型
      *
      * 面向函数编程： 将一个函数传来传去  --- 高阶函数
      * 1、以函数作为参数   ****
      * 2、以函数作为返回值
      * 需要明确函数的类型
      *
      *
      */

    /**
      * 函数的类型
      * 1、函数的类型和函数名无关
      * 2、函数类型油参数类型和返回值类型决定
      *
      * fun1是一个参数为String返回值为Int类型的函数
      */

    def fun1(str: String): Int = {
      str.toInt
    }

    println(fun1("100"))


    //String => Int 由于描述函数的类型
    // => 左边是函数参数的类型，=> 右边是函数返回值的类型
    val f: String => Int = fun1


    println(f("200"))
    println(f)
  }

}
